zookeeper 集群搭建

前言

由于机器数量有限,zk集群搭建采用单机伪集群模拟三台zk节点的方式进行搭建。

搭建环境

  1. jdk version 1.8.0_92(64bit)
  2. zookeeper version 3.4.9
  3. centos6.5 linux 2.6.32-431.23.3.el6.x86_64

搭建过程

  1. 新建zookeeper-cluster目录

    cd /usr/local/
    mkdir zookeeper-cluster
  2. 下载zookeeper-3.4.9.tar.gz包

    wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz
  3. 解压压缩包

    tar -zxvf zookeeper-3.4.9.tar.gz
  4. 修改zookeeper-3.4.9文件夹名称并复制三份

    mv zookeeper-3.4.9 zk-node1
    cp -r zk-node1/ zk-node2/
    cp -r zk-node1/ zk-node3/
  5. 创建各节点数据目录和日志目录

    mkdir /usr/local/zookeeper-cluster/zk-node1/data
    mkdir /usr/local/zookeeper-cluster/zk-node1/log

    mkdir /usr/local/zookeeper-cluster/zk-node2/data
    mkdir /usr/local/zookeeper-cluster/zk-node2/log

    mkdir /usr/local/zookeeper-cluster/zk-node3/data
    mkdir /usr/local/zookeeper-cluster/zk-node3/log
  6. 创建各节点myid文件并写入对应节点编号

    echo 1 > /usr/local/zookeeper-cluster/zk-node1/data/myid
    echo 2 > /usr/local/zookeeper-cluster/zk-node2/data/myid
    echo 3 > /usr/local/zookeeper-cluster/zk-node3/data/myid
  7. 修改各节点配置文件名称

    cp zoo_sample.cfg zoo.cfg
  8. 修改各节点zoo.cfg配置

    #zk-node1配置
    vim /usr/local/zookeeper-cluster/zk-node1/conf/zoo.cfg
    dataDir=/usr/local/zookeeper-cluster/zk-node1/data
    dataLogDir=/usr/local/zookeeper-cluster/zk-node1/log
    clientPort=2181
    tickTime=2000
    initLimit=5
    syncLimit=2
    server.1=127.0.0.1:1888:1999
    server.2=127.0.0.1:2888:2999
    server.3=127.0.0.1:3888:3999

    #zk-node2配置
    vim /usr/local/zookeeper-cluster/zk-node2/conf/zoo.cfg
    dataDir=/usr/local/zookeeper-cluster/zk-node2/data
    dataLogDir=/usr/local/zookeeper-cluster/zk-node2/log
    clientPort=2182
    tickTime=2000
    initLimit=5
    syncLimit=2
    server.1=127.0.0.1:1888:1999
    server.2=127.0.0.1:2888:2999
    server.3=127.0.0.1:3888:3999

    #zk-node3配置
    vim /usr/local/zookeeper-cluster/zk-node3/conf/zoo.cfg
    dataDir=/usr/local/zookeeper-cluster/zk-node3/data
    dataLogDir=/usr/local/zookeeper-cluster/zk-node3/log
    clientPort=2183
    tickTime=2000
    initLimit=5
    syncLimit=2
    server.1=127.0.0.1:1888:1999
    server.2=127.0.0.1:2888:2999
    server.3=127.0.0.1:3888:3999
  9. 节点服务操作

    /usr/local/zookeeper-cluster/zk-node1/bin/zkServer.sh start
    /usr/local/zookeeper-cluster/zk-node1/bin/zkServer.sh stop
    /usr/local/zookeeper-cluster/zk-node1/bin/zkServer.sh status
    /usr/local/zookeeper-cluster/zk-node1/bin/zkServer.sh restart
  10. 创建zk集群启动停止脚本

    cd /usr/local/zookeeper-cluster
    touch zkClusterServer.sh

    #----------------------------脚本代码(开始)----------------------------#
    #!/bin/bash
    #author:lipan
    #time:2017-02-05
    #description:zk集群启动,关闭,重启脚本

    start(){
    /usr/local/zookeeper-cluster/zk-node1/bin/zkServer.sh start
    echo 'zk-node1 start success...'
    sleep 1
    /usr/local/zookeeper-cluster/zk-node2/bin/zkServer.sh start
    echo 'zk-node2 start success...'
    sleep 2
    /usr/local/zookeeper-cluster/zk-node3/bin/zkServer.sh start
    echo 'zk-node3 start success...'
    }

    stop(){
    /usr/local/zookeeper-cluster/zk-node1/bin/zkServer.sh stop
    echo 'zk-node1 stop success...'
    sleep 2
    /usr/local/zookeeper-cluster/zk-node2/bin/zkServer.sh stop
    echo 'zk-node2 stop success...'
    sleep 1
    /usr/local/zookeeper-cluster/zk-node3/bin/zkServer.sh stop
    echo 'zk-node3 stop success...'
    }

    status(){
    /usr/local/zookeeper-cluster/zk-node1/bin/zkServer.sh status
    /usr/local/zookeeper-cluster/zk-node2/bin/zkServer.sh status
    /usr/local/zookeeper-cluster/zk-node3/bin/zkServer.sh status
    }

    case "$1" in
    start)
    start
    ;;
    stop)
    stop
    ;;
    status)
    status
    ;;
    restart)
    stop
    sleep 1
    start
    ;;
    *)
    echo 'command is error...'
    echo 'please choose right command:start|stop|status|restart.'
    ;;
    esac
    exit 0
    #----------------------------脚本代码(结束)----------------------------#

    赋予脚本执行权限:chmod +x zkClusterServer.sh
  11. zk集群启动关闭重启操作

    ./zkClusterServer.sh start
    ./zkClusterServer.sh stop
    ./zkClusterServer.sh status
    ./zkClusterServer.sh restart
  12. 集群运行状态
    集群运行状态图

参考链接

  1. http://zookeeper.apache.org/